import defineReactive from './utils/defineReactive'
import Observer from './utils/Observer'

const obj = {
    a: {
        m: {
            n: {
                o: 1
            }
        }
    },
    b: 2
};

// 创建 observe 函数
function observe(value) {
    if (Object.prototype.toString.call(value) !== '[object Object]') {
        console.error('不是对象，不能被观察');
        return;
    }

    // 定义 ob
    let ob;

    if (typeof (value.__ob__) !== 'undefined') {
        ob = value.__ob__;
    } else {
        ob = new Observer(value);
    }

    return ob;
}

observe(obj);

// defineReactive(obj, 'a')
// console.log(obj.a);
// console.log(obj.a.m.n);

// defineReactive(obj, 'name', 10);
// console.log(obj.name++);
// console.log(obj.name);
// console.log(obj.name = 100);
// console.log(obj.name);
